移除列表中的重复项 您所在的位置:网站首页 python 集合去重 移除列表中的重复项

移除列表中的重复项

#移除列表中的重复项 | 来源: 网络整理| 查看: 265

目录 1. 循环去重 2. 集合去重 3. itertools 库去重 4. 性能比较

Python 中的列表 (List) 类型是允许有重复项的,有没有办法移除列表中的重复项呢?本文介绍三种方法:

循环去重 集合去重 itertools 库去重 1. 循环去重

循环去重是通过 for 循环遍历列表中的所有元素,并引入一个新的列表对象帮助去重。

代码

# 定义一个含有重复项的列表 a_list = [1,3,9,7,9,6] result_list = [] for item in a_list: if item not in result_list: result_list.append(item) else: continue print(result_list)

输出结果

[1, 3, 9, 7, 6]

从输出结果可看出,重复的 9 已经被移除掉了。

2. 集合去重

与列表类型不同,Python 中的集合 (Set) 类型是不允许有重复项的,利用这一特点,可以利用集合帮助去除列表中的重复项。

注意

集合去重法输出的列表与源列表相比有一个不同:元素的顺序不同。

代码

# 定义一个含有重复项的列表 a_list = [1,3,9,7,9,6] result_list = list(set(a_list)) print(result_list)

输出结果

[1, 3, 6, 7, 9]

从输出结果可以看出重复的 9 被移除,元素的顺序也按某种顺序进行了排序。

3. itertools 库去重

Python 的 itertools 库中有一个 groupby 方法,它可以将列表中相邻的重复元素去掉,因此对列表先排序,再使用 groupby 方法就可以去除列表中的重复元素。

注意

由于对列表进行了排序,因此输出列表中元素的顺序与源列表相比可能不相同。

代码

# 定义一个含有重复项的列表 from itertools import groupby a_list = [1,3,9,7,7,9,6] result_list = ([i[0] for i in groupby(sorted(a_list))]) print(result_list)

输出结果

[1, 3, 6, 7, 9]

从输出结果可以看出重复的 9 被移除,元素的顺序也进行了排序。

4. 性能比较

下面使用 timeit 库测试一下循环去重法、集合去重法、itertools 库去重法的性能,看看谁更快一些。

测试代码

import timeit setup = """ from itertools import groupby a_list = [1,3,9,7,9,6] """ method_1_test_code = """ result_list = [] for item in a_list: if item not in result_list: result_list.append(item) else: continue """ method_2_test_code = """ result_list = list(set(a_list)) """ method_3_test_code = """ result_list = ([i[0] for i in groupby(sorted(a_list))]) """ method_1_taking_time = timeit.timeit(stmt=method_1_test_code, setup=setup, number=100) method_2_taking_time = timeit.timeit(stmt=method_2_test_code, setup=setup, number=100) method_3_taking_time = timeit.timeit(stmt=method_3_test_code, setup=setup, number=100) print('循环去重耗时: ' + str(method_1_taking_time)) print('集合去重耗时: ' + str(method_2_taking_time)) print('itertools 库去重耗时: ' + str(method_3_taking_time))

测试结果

循环去重耗时: 3.130000550299883e-05 集合去重耗时: 2.5399960577487946e-05 itertools 库去重耗时: 6.660004146397114e-05

从测试结果可以看出:集合去重法的性能最好。

有关 Python 代码运行速度的测试方法可参见我的文章:如何测试 Python 代码的速度 - datetime, timeit。

版权声明

本文由ReadingHere原创,未经ReadingHere授权不得转载、摘编。已经授权使用的,应在授权范围内使用,并注明来源: www.readinghere.com。违反上述声明者,ReadingHere将追究其相关法律责任。

交流合作

如需交流咨询或商务合作请扫描下图微信二维码联系。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有